#include "drv_wifi.h"
// 全局变量定义（必须有，且只在一个.c文件中定义）
uint8_t wifi_connected_flag = 0;  // 初始化很重要
uint8_t wifi_retry_count = 0;

uint8_t drv_wifi_init(void)
{
    char cmd_1[]="AT+CWMODE=1\r\n";
    char cmd_2[]="AT+CWJAP_DEF=\"hqyjcs\",\"hqyj2022\"\r\n";//连接wifi
    char cmd_3[]="AT+CIPSTART=\"TCP\",\"192.168.20.233\",8888\r\n";//连接服务器
    char fail_msg[] = "WiFi connection failedfailed"; // 要发送的失败信息
    char wifi[] = "WIFI GOT IP";

    while (wifi_retry_count < 3)  // 最多重试3次
    {
        // 发送连接指令
        usart_sendstr(USART3, cmd_1, strlen(cmd_1));
        drv_systick_ms(2000);
        
        usart_sendstr(USART3, cmd_2, strlen(cmd_2));
        drv_systick_ms(10000);  // 等待连接WiFi
        
        usart_sendstr(USART3, cmd_3, strlen(cmd_3));
        drv_systick_ms(4000);   // 等待连接服务器
        
        // 检查是否连接成功
        if (wifi_connected_flag)
        {
            //usart_sendstr(USART2, wifi, strlen(wifi));
            wifi_connected_flag = 0;
            printf("WiFi connect successful!\r\n");
            return 1;  // 成功则直接返回
        }
        
        // 失败处理：只执行当前次数的失败通知，不循环累加
        usart_sendstr(USART3, fail_msg, strlen(fail_msg));
        printf("Connect failed in %d time\r\n", wifi_retry_count + 1); // 打印当前失败次数
        wifi_retry_count++;  // 仅累加1次
        drv_systick_ms(1000);  // 等待后重试
    }
    
    // 3次都失败才执行
    printf("3 times all failed, return\r\n");
    return 0;  // 失败
}

